package com.hand.hap.demo.tasks;

import com.hand.hap.code.rule.exception.CodeRuleException;
import com.hand.hap.code.rule.service.ISysCodeRuleProcessService;
import com.hand.hap.fnd.dto.Company;
import com.hand.hap.fnd.service.ICompanyService;
import com.hand.hap.task.info.ExecutionInfo;
import com.hand.hap.task.service.ITask;
import com.hand.hap.task.service.ITaskCallback;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author shuai.wang02@hand-china.com
 * @version 1.0
 * @description
 * @date 2018/8/7 10:36
 */
public class Test implements ITask {


    @Autowired
    ISysCodeRuleProcessService codeRuleProcessService;

    @Autowired
    ICompanyService companyService;

    @Override
    public void execute(ExecutionInfo executionInfo) throws Exception {

//        System.out.println("17802");
//
//        //创建HSSFWorkbook对象(excel的文档对象)
//        HSSFWorkbook wb = new HSSFWorkbook();
//       //建立新的sheet对象（excel的表单）
//        HSSFSheet sheet = wb.createSheet("成绩表");
//        //在sheet里创建第一行，参数为行索引(excel的行)，可以是0～65535之间的任何一个
//        HSSFRow row1 = sheet.createRow(0);
//        //创建单元格（excel的单元格，参数为列索引，可以是0～255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
//        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
//            //合并单元格CellRangeAddress构造参数依次表示起始行，截至行，起始列， 截至列
//        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
//         //在sheet里创建第二行
//        HSSFRow row2 = sheet.createRow(1);
//        //创建单元格并设置单元格内容
//        row2.createCell(0).setCellValue("姓名");
//        row2.createCell(1).setCellValue("班级");
//        row2.createCell(2).setCellValue("笔试成绩");
//        row2.createCell(3).setCellValue("机试成绩");
//        //在sheet里创建第三行
//        HSSFRow row3 = sheet.createRow(2);
//        row3.createCell(0).setCellValue("李明");
//        row3.createCell(1).setCellValue("As178");
//        row3.createCell(2).setCellValue(87);
//        row3.createCell(3).setCellValue(78);
//
//        //输出Excel文件
//        FileOutputStream output = new FileOutputStream("d:\\workbook.xls");
//
//        wb.write(output);
//        output.flush();
//
//        executionInfo.setExecuteResultPath("D:\\workbook.xls");

        codeRoleCompanyTest();

    }

    private void codeRoleCompanyTest() throws CodeRuleException {
        List<Company> companyList = companyService.selectAll();
        System.out.println(companyList.toString());
        for (int i = 0; i < companyList.size(); i++) {
            Map<String, String> map = new HashMap<>();
            map.put("var", companyList.get(i).getCompanyFullName());
            String m = codeRuleProcessService.getRuleCode("TASK_EXECUTION_ORDER", map);
            System.out.println(m);
        }
    }


    public void codeRoleTest() throws CodeRuleException {

        String k = codeRuleProcessService.getRuleCode("TASK_EXECUTION_CODE");
        System.out.println(k);
        Map<String, String> map = new HashMap<>();
        map.put("var1", "demo");
        String m = codeRuleProcessService.getRuleCode("TASK_EXECUTION_DEMO", map);
        System.out.println(m);


    }

    @Override
    public <T> T safeExecute(ITaskCallback<T> callback) throws Exception {
        return null;
    }
}
